package com.intct.hbase.ddl.table;

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;
import java.util.Set;

/**
 * @author gufg
 * @since 2025-11-03 16:20
 */
public class AlterCreate {
    public static void main(String[] args) throws IOException {
        // 建立连接
        Connection conn = ConnectionFactory.createConnection();

        // 获取Admin实例
        Admin admin = conn.getAdmin();

        // 获取TableName实例
        TableName tableName = TableName.valueOf("intct86", "t3_api");

        try {

            // 判断表是否存在
            if (admin.tableExists(tableName)) {
                // *****获取原表描述
                TableDescriptor oldTableDescriptor = admin.getDescriptor(tableName);

                // 新表描述与旧描述关联
                TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(oldTableDescriptor);

                // 列族描述
                ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("f1".getBytes());

                // 设置版本
                columnFamilyDescriptorBuilder.setMaxVersions(5);

                // TODO 判断如果原表没有列族名称，增加。否则，修改
//                Set<byte[]> columnFamilyNames = oldTableDescriptor.getColumnFamilyNames();
//                // 判断列族是否存在
//                if (columnFamilyNames.contains("f1".getBytes())) {
//                    //修改列族
//                    tableDescriptorBuilder.modifyColumnFamily(columnFamilyDescriptorBuilder.build());
//                } else {
//                    // 增加
//                    tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());
//                }

                // 删除列族
                tableDescriptorBuilder.removeColumnFamily("f4".getBytes());

                // 修改表
                admin.modifyTable(tableDescriptorBuilder.build());
            }
        }  catch (IOException e) {
            System.out.println("创建表失败！");
        } finally {
            // 关闭资源
            if (admin != null) {
                admin.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
}
